package jsr223; import javax.script.ScriptContext; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; public class EvalScript { public static void main(String[] args) throws Exception { // create a script engine manager ScriptEngineManager factory = new ScriptEngineManager(); // create a Clojure engine ScriptEngine engine = factory.getEngineByName("Clojure"); // evaluate Clojure code from String engine.eval("(def foo \"World!\") (println \"Hello, \" foo)"); System.out.printf("foo = %s\n", engine.get("user/foo")); engine.put("user/foo", "planet"); engine.eval("(println \"Hello, \" foo)"); engine.eval("(ns myns) (def foo \"xxx\")"); engine.put("myns/foo", "planet"); engine.eval("(println \"Hello, \" myns/foo)"); System.out.println(engine.getBindings(ScriptContext.ENGINE_SCOPE).keySet()); engine.eval("(def bar 747)"); int bar = (Integer) engine.get("user/bar"); System.out.printf("bar from Clojure: %d\n", bar); } }